<?php
/** 
+----------------------------------------------------- 
* Mcrypt 加密/解密 
* @param String $date 要加密和解密的数据 
* @param String $str  用来生产key 
* @param String $mode encode 默认为加密/decode 为解密 
* @return String 
* @author zxing@97md.net Mon Sep 14 22:59:28 CST 2009 
+----------------------------------------------------- 
* @example 
*/ 
function Mcrypt($date,$str,$mode = 'encode'){ 

$key = md5($str);//用MD5哈希生成一个密钥，注意加密和解密的密钥必须统一 
if ($mode == 'decode'){ 
$date = base64_decode($date); 
} 
if (function_exists('mcrypt_create_iv')){ 
$iv_size = mcrypt_get_iv_size('rijndael-256', MCRYPT_MODE_ECB); 
$iv = mcrypt_create_iv($iv_size, MCRYPT_RAND); 
} 
if (isset($iv) && $mode == 'encode'){ 
$passcrypt = mcrypt_encrypt('rijndael-256', $key, $date, MCRYPT_MODE_ECB, $iv); 
}elseif (isset($iv) && $mode == 'decode'){ 
$passcrypt = mcrypt_decrypt('rijndael-256', $key, $date, MCRYPT_MODE_ECB, $iv); 
} 
if ($mode == 'encode'){ 
$passcrypt = base64_encode($passcrypt); 
} 
return $passcrypt; 
}



function encrypt_win($str1){
   $len=strlen($str1);
   $ends=substr($str1,$len-1,1);
   $starts=intval(substr($str1,0,$len-1))+152*$ends+$ends;
   $str1=$ends.$starts;
   for ($i=48;$i<=57;$i++){
      $k=17+$i;
      $str1=ereg_replace(chr($i),chr($k),$str1);
   }
   return $str1;
}

function decode_win($str1){
   for ($i=65;$i<=75;$i++){
      $k=$i-17;
      $str1=ereg_replace(chr($i),chr($k),$str1);
   }
   $len=strlen($str1);
   $ends=substr($str1,0,1);
   $starts=substr($str1,1,$len);
   $str1=($starts-$ends*152-$ends).$ends;
   return intval($str1);
}




//去除html代码
function rehtml($str)
{
	$pattern=array ("'<script[^>]*?>.*?</script>'si", "'<style[^>]*?>.*?</style>'si",  "'<[\/\!]*?[^<>]*?>'si",  "'([\r\n])[\s]+'",  "'&(quot|#34);'i",  "'&(amp|#38);'i",  "'&(lt|#60);'i",  "'&(gt|#62);'i",  "'&(nbsp|#160);'i",  "'&(iexcl|#161);'i",  "'&(cent|#162);'i",  "'&(pound|#163);'i",  "'&(copy|#169);'i",  "'&#(\d+);'e");
	$replace=array ("", "", "\\1", "", "&", "<", ">", " ", chr(161), chr(162), chr(163), chr(169), "chr(\\1)");
	return preg_replace ($pattern, $replace, $str);
}



/** 
 * 顯示錯誤信息，并跳到指定地址
 *@paramstring  $str 提示的文字
 *@paramstring  $go 跳到地址，空则换回上一页 
 */
function ShowMsgAndRedirect($str,$go="go"){
	if ($go==""&&$str!=""){
		echo "<script>alert('".$str."');</script>";
		exit;
	}
	if ($go!="go"&&$str!=""){
		echo "<script>alert('".$str."');location.href='".$go."';</script>";
		exit;
	}
	if ($go=="go"&&$str!=""){
		echo "<script>alert('".$str."');history.go(-1);</script>";
		exit;
	}
	if ($str==""){
		echo "<script>location.href='".$go."';</script>";
		exit;
	}
}


//判断是否数字
function isnum($str){
  if(ereg("^[0-9]+$",$str))
  {
	  return  true;
  }
  return false;
}




/*截取字符，支持中英文
* $sourcestr :需要截取字符串
* $cutlength ：需要截取的长度	
*/
function cut_str($sourcestr,$cutlength,$charstr=".."){
	$returnstr='';
	$i=0;
	$n=0;
	$str_length=strlen($sourcestr);//字符串的字节数
	while (($n<$cutlength) and ($i<=$str_length)){
		$temp_str=substr($sourcestr,$i,1);
		$ascnum=Ord($temp_str);//得到字符串中第$i位字符的ascii码
		if ($ascnum>=224){ //如果ASCII位高与224，
			$returnstr=$returnstr.substr($sourcestr,$i,3); //根据UTF-8编码规范，将3个连续的字符计为单个字符
			$i=$i+3; //实际Byte计为3
			$n++; //字串长度计1;
		}elseif ($ascnum>=192){ //如果ASCII位高与192，
		
			$returnstr=$returnstr.substr($sourcestr,$i,2); //根据UTF-8编码规范，将2个连续的字符计为单个字符
			$i=$i+2; //实际Byte计为2
			$n++; //字串长度计1
		}elseif ($ascnum>=65 && $ascnum<=90){ //如果是大写字母，
			$returnstr=$returnstr.substr($sourcestr,$i,1);
			$i=$i+1; //实际的Byte数仍计1个
			$n++; //但考虑整体美观，大写字母计成一个高位字符
		}else{ //其他情况下，包括小写字母和半角标点符号，
			$returnstr=$returnstr.substr($sourcestr,$i,1);
			$i=$i+1; //实际的Byte数计1个
			$n=$n+0.5; //小写字母和半角标点等与半个高位字符宽...
		}
	}
	if ($str_length>$cutlength){
		$returnstr = $returnstr . $charstr;//超过长度时在尾处加上省略号
	}
	return $returnstr;

}


//过滤特殊字符
function filterStr( $strings ){
    if(empty($strings)) return false;
    $strings    = get_magic_quotes_gpc() ? htmlspecialchars(trim($strings)) : addslashes(htmlspecialchars(trim($strings)));
    return $strings;
}



//删除斜杠特殊字符
function deletedFilterStr($content){
    if(empty($content)) return false;
    $content    = get_magic_quotes_gpc() ? stripslashes(trim($content)) : trim($content);
    return $content;
}

//查询时候检查
function check_input($value){  
	// 去除斜杠
	if (get_magic_quotes_gpc()) { $value = stripslashes($value);}
	// 如果不是数字则加引号
	if (!is_numeric($value)){ $value = "'" . mysql_real_escape_string($value) . "'"; }
	return $value;
}
?>